home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ccdl150l.zip / IO / TMPFIL.C < prev    next >
C/C++ Source or Header  |  1997-03-02  |  1KB  |  66 lines

  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. #ifdef NONRECURSIVE
  7. static char ibuf[256];
  8. #endif
  9. char *tmpnam(char *buf)
  10. {
  11. #ifndef NONRECURSIVE
  12.     char pbuf[STACKPAD];
  13.     char ibuf[256];
  14. #endif
  15.     time_t time1;
  16.     struct tm *ltime;
  17.     int i,q=0;
  18.     FILE *fil;
  19.     time(&time1);
  20.     ltime = localtime(&time1);
  21.     while (1) {
  22.         ibuf[0] = (char)(ltime->tm_year/26);
  23.         ibuf[1] = (char)ltime->tm_mon;
  24.         ibuf[2] = (char)ltime->tm_mday;
  25.         ibuf[3] = (char)ltime->tm_hour;
  26.         ibuf[4] = (char)(ltime->tm_min/36);
  27.         ibuf[5] = (char)(ltime->tm_min%36);
  28.         ibuf[6] = (char)(ltime->tm_sec/36);
  29.         ibuf[7] = (char)(ltime->tm_sec%36);
  30.         ibuf[8] = '.';
  31.         ibuf[9] = 'T';
  32.         ibuf[10] = 'M';
  33.         ibuf[11] = 'P';
  34.         ibuf[12] = 0;
  35.         for (i=0; i < 8; i++) {
  36.             ibuf[i] += 'A';
  37.             if (ibuf[i] > 'Z')
  38.                 ibuf[i]+= '0' - 'A';
  39.         }
  40.         fil = fopen(ibuf,"rb");
  41.         if (!fil)
  42.           break;
  43.         fclose(fil);
  44.         if (q % 26 == 0) {
  45.             ltime->tm_mon++;
  46.             if (ltime->tm_mon > 11)
  47.                 ltime->tm_mon = 0;
  48.         }
  49.         q++;
  50.         ltime->tm_year++;
  51.     }
  52.     if (buf) {
  53.         strcpy(buf,ibuf);
  54.         return buf;
  55.     }
  56.     else
  57.         return &ibuf;
  58. }
  59. FILE *tmpfile(void)
  60. {
  61.     char buf[20];
  62.     FILE *stream = fopen(tmpnam(buf),"wb+");
  63.     if (stream)
  64.         stream->istemp = 1;
  65.     return stream;
  66. }